The present invention, in some embodiments thereof, relates to a shared file system and, more particularly, but not exclusively, to negotiating ownership of a memory record in a shared file system.
Direct-attached storage (DAS) is a model in which data is local on a server and benefits from low latency access. However, when multiple servers are connected to a network, the DAS model is: inefficient, because there is no resource sharing between servers; inconvenient since data cannot be shared between processes running on different application servers; and not resilient because data is lost upon a single server failure.
To overcome the weaknesses of DAS, shared storage model was invented. Shared-storage systems store all or most metadata and data on a server, which is typically an over-the-network server and not the same server that runs the application/s that generates and consumes the stored data. This architecture can be seen both in traditional shared storage systems, such as NetApp FAS and/or EMC Isilon, where all of the data is accessed via the network; and/or in host-based storage, such as Redhat Gluster and/or EMC Scale-io, in which application servers also run storage functions, but the data is uniformly distributed across the cluster of servers (so 1/n of the data is accessed locally by each server and the remaining (n−1)/n of the data is accessed via the network).
Another well known variant of shared storage is shared storage with (typically read) caches. In this design the application server includes local storage media (such as a Flash card) that holds data that was recently accessed by the application server. This is typically beneficial for recurring read requests. Caching can be used in front of a traditional shared storage (for example in Linux block layer cache (BCache)), or in front of a host-based storage (for example in VMware vSAN). These caching solutions tend to be block-based solutions—i.e. DAS file system layer on top of a shared block layer.
Finally, some storage protocols such as Hadoop distributed file system (HDFS) and parallel network file system (pNFS), allow for metadata to be served from a centralized shared node, while data is served from multiple nodes. The data (not metadata) is typically uniformly distributed among the nodes for load balancing purposes.